package com.powerbank.common.utils;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 交易号生成器
 */
public class TransactionNoGenerator {

    private static final AtomicInteger counter = new AtomicInteger(0);

    /**
     * 生成交易号
     * @param prefix 前缀
     * @return 交易号
     */
    public static String generate(String prefix) {
        // 获取当前时间戳
        String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));

        // 获取自增序列号
        int sequence = counter.getAndIncrement() % 10000;

        // 格式化序列号为4位数字
        String sequenceStr = String.format("%04d", sequence);

        // 组合生成交易号
        return prefix.toUpperCase() + timestamp + sequenceStr;
    }
}